class Solution {
public:
    bool canJump(vector<int>& nums) {
        //枚举所有可能的长度，从中选择最长的长度，看是否大于nums.size()
        int left = 0;
        int right = 0;
        int maxwindow = 0;
        while(left<=right)
        {
            if(maxwindow>=nums.size()-1)
            {
                return true;
            }//某一个已经到达了最后的位置
            for(int i = left;i<=right;i++)
            {
                //枚举左区间，计算最长的右区间
                maxwindow= max(maxwindow,i+nums[i]);//这里体现出了贪心的思想，只选择能够跳跃最长的距离
            }
            left = right+1;
            right = maxwindow;
        }
        return false;
    }
};